#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_myformtable.h"



QT_BEGIN_NAMESPACE
namespace Ui { class MyFormTableClass; };
QT_END_NAMESPACE

class QStandardItemModel;
class QItemSelectionModel;

class MyDialogHead;

class MyFormTable : public QMainWindow
{
    Q_OBJECT

public:
    MyFormTable(QWidget *parent = nullptr);
    ~MyFormTable();

private:
    Ui::MyFormTableClass *ui;

private:
    QStandardItemModel* model_item = nullptr;
    QItemSelectionModel* model_select = nullptr;

private:
    MyDialogHead* dialog_head = nullptr;//设置表头的对话框

//组件对应信号的槽函数
private slots:

    /**
     * @brief 设置行数、列数
    */
    void on_action_SetSize_triggered();

    /**
     * @brief 设置表头
    */
    void on_action_SetHeader_triggered();

    /**
     * @brief 定位
    */
    void on_action_Locate_triggered();

    /**
     * @brief 选择的格子改变
     * @param index 
    */
    void on_tableView_clicked(const QModelIndex& index);

private slots:
    /**
     * @brief 设置单元格文本
     * @param row 行
     * @param column 列 
     * @param text 文本
    */
    void do_set_cell_text(int row, int column, QString& text);

    /**
     * @brief 选项改变的槽函数
     * @param current 
     * @param previous 
    */
    void do_model_changed(const QModelIndex& current, const QModelIndex& previous);

signals:
    void cell_index_changed(int row, int column);
};
